// miniprogram/pages/addAddress/addAddress.js
var app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    tags: ["90㎡以下", "90~99㎡", "100~119㎡", "120~139㎡", "140~159㎡", "160㎡以上"],
    activeIndex: -1,
    // 表单验证规则
    rules: [{
      name: "userName",
      rules: {
        required: true,
        maxlength: 8,
        minlength: 2,
        message: "姓名的长度范围为2~8"
      }
    }, {
      name: "phoneNumber",
      rules: [{
        required: true,
        message: '手机号必填'
      }, {
        mobile: true,
        message: '手机号格式不对'
      }]
    }, {
      name: 'address',
      rules: {
        required: true,
        message: '地址必填'
      },
    }, {
      name: 'houseNumber',
      rules: {
        required: true,
        message: '门牌号必填'
      },
    }],
    // 表单数据
    formData: {
      area: ""
    },
    // 判断用户是否为新增地址
    isAdd:'',
    // 如果用户是编辑操作，操作的地址下标
    index:-1
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    if (!options.isAdd) {
      // 判断是否为编辑操作 如果是则进行下列操作
      let index = Number(options.index);
      const db = wx.cloud.database();
      await db.collection("userInfo").where({
        _openid:app.globalData.openId
      }).get().then(res => {
        var active = this.data.tags.indexOf(res.data[0].address[index].area);
        this.setData({
          edit:res.data[0].address[index],
          // 避免用户未进行修改提交表单验证不通过
          formData:res.data[0].address[index],
          // 修改当前选择的标签
          activeIndex:active,
          index:index
        })
      });
      
    }else{
      this.setData({
        isAdd:options.isAdd
      })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },
  // 修改内容
  formInputChange(e) {
    const {
      field
    } = e.currentTarget.dataset
    this.setData({
      [`formData.${field}`]: e.detail.value
    })
  },
  // 监听表单提交
  submitForm: function () {
    // 验证表单信息
    this.selectComponent('#form').validate(async (valid, errors) => {
      // 验证不通过
      if (!valid) {
        const firstError = Object.keys(errors)
        if (firstError.length) {
          this.setData({
            error: errors[firstError[0]].message
          })
        }
      } else {
        // 验证通过
        if (this.data.formData.area) {
          // 确保用户选择了家庭面积
          wx.showToast({
            title: '校验通过'
          })
          // 如果用户为新增地址
          if(this.data.isAdd){
            // 向数据库中存储数据
          await wx.cloud.callFunction({
            // 云函数名称
            name: 'update',
            // 传给云函数的参数
            data: {
              // 查询条件
              "openId":app.globalData.openId,
              formData: this.data.formData,
              type:"address"
            },
          })
          .then(() => {
            var pages = getCurrentPages();
            pages[pages.length - 2].onReady();
            wx.navigateBack();
          })
          .catch(console.error)
          }else{
            // 如果用户为修改（编辑）地址
            await wx.cloud.callFunction({
              // 云函数名称
            name: 'modify',
            // 传给云函数的参数
            data: {
              // 查询条件
              "openId":app.globalData.openId,
              "index":this.data.index,
              formData: this.data.formData,
            }
            }).then(() => {
              var pages = getCurrentPages();
              pages[pages.length - 2].onReady();
              wx.navigateBack();
            })
            .catch(console.error)
          }
          
        } else {
          this.setData({
            error: "请选择家庭面积"
          })
        }

      }
    })
  },
  // 修改tag标签样式
  checked: function (e) {
    var index = e.currentTarget.dataset.id;
    let value = e.currentTarget.dataset.tag;
    let newData = this.data.formData;
    newData.area = value;
    this.setData({
      activeIndex: index,
      formData: newData
    })
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})